wayland: Don't send bogus values for cursor surface buffer/scale
authorAlexander Larsson <alexl@redhat.com>
Thu, 30 Apr 2015 08:26:52 +0000 (10:26 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 30 Apr 2015 08:26:52 +0000 (10:26 +0200)
I was getting really weird values for scale for the blank cursor used
when hiding the cursor in a GtkEntry when typing, this was caused
by gdk_wayland_device_update_window_cursor sending random values
when the returned buffer was NULL.

We fix this by just not sending any buffer or scale updates in this
case.

gdk/wayland/gdkdevice-wayland.c

index 070837260a4a85a100f38fc22cd366b7a2b3f24e..99658aeff89cae8179eec9b02e773f80bfaccf4f 100644 (file)
@@ -211,10 +211,13 @@ gdk_wayland_device_update_window_cursor (GdkWaylandDeviceData *wd)
                          wd->enter_serial,
                          wd->pointer_surface,
                          x, y);
-  wl_surface_attach (wd->pointer_surface, buffer, 0, 0);
-  wl_surface_set_buffer_scale (wd->pointer_surface, scale);
-  wl_surface_damage (wd->pointer_surface,  0, 0, w, h);
-  wl_surface_commit (wd->pointer_surface);
+  if (buffer)
+    {
+      wl_surface_attach (wd->pointer_surface, buffer, 0, 0);
+      wl_surface_set_buffer_scale (wd->pointer_surface, scale);
+      wl_surface_damage (wd->pointer_surface,  0, 0, w, h);
+      wl_surface_commit (wd->pointer_surface);
+    }
 
   if (wd->grab_cursor)
     {